package com.xbongbong.paas.print.manager.feign;

import com.xbongbong.paas.pojo.dto.FormDataGetDTO;
import com.xbongbong.paas.pojo.dto.FormGetDTO;
import com.xbongbong.paas.pojo.dto.ProcessNodeTaskGetDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.StatementCustomerTableDTO;
import com.xbongbong.pro.customerstatement.pojo.dto.StatementSummaryDetailDTO;
import com.xbongbong.pro.detailtab.dto.DetailTabDataGetDTO;
import com.xbongbong.pro.detailtab.dto.PrintDataVisibleDTO;
import com.xbongbong.pro.formexplain.pojo.dto.ExplainMapLinkDataDTO;
import com.xbongbong.pro.formexplain.pojo.dto.ProductExplainDTO;
import com.xbongbong.pro.template.pojo.dto.TemplateDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

/**
 * 创建时间： 2018/9/13 9:34
 * 修改时间： 2018/9/13 9:34 梁鲁江
 *
 * @author 梁鲁江
 */
@FeignClient(name = "pro-web-pc",contextId = "formFeignClient")
public interface FormFeignClient {

    /**
     * 获取表单信息
     *
     * @param formGetDTO 获取表单参数
     * @author GuoJun.HU
     * @since V1.0
     * @return String
     * @date 2019/2/19 9:29
     */
    @RequestMapping(value = "/pro/v1/form/get", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getFormInfo(FormGetDTO formGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取可选表单列表
     *
     * @param templateDTO 获取表单参数
     * @author zheng.li
     * @since V1.0
     * @return String
     * @date 2019/3/5
     */
    @RequestMapping(value = "/pro/v1/template/form/list", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getFormEnableList(TemplateDTO templateDTO, @RequestParam("lang") String lang);

    /**
     * 获取表单基本信息
     *
     * @param formDataGetDTO 获取表单参数
     * @author zheng.li
     * @since V1.0
     * @return String
     * @date 2019/03/12
     */
    @RequestMapping(value = "/pro/v1/form/data/get", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getFormData(FormDataGetDTO formDataGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取关联产品字段的解释
     *
     * @param productExplainDTO 入参
     * @author zheng.li
     * @since V1.0
     * @return String
     * @date 2019/03/25
     */
    @RequestMapping(value = "/pro/v1/form/explain/getSelectProductExplains", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getSelectProductExplains(ProductExplainDTO productExplainDTO, @RequestParam("lang") String lang);

    /**
     * 打印模板，获取产品字段解释
     * @param productExplainDTO 入参
     * @return String
     */
    @RequestMapping(value = "/pro/v1/form/explain/getSelectProductExplainsForPrint", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getSelectProductExplainsForPrint(ProductExplainDTO productExplainDTO, @RequestParam("lang") String lang);

    /**
     * 获取工作报告详情
     * @param formDataGetDTO 入参
     * @return String
     */
    @RequestMapping(value = "/pro/v1/workReport/detail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String workReportDetail(FormDataGetDTO formDataGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取tab栏产品信息
     * @param detailTabDataGetDTO 入参
     * @return String
     */
    @RequestMapping(value = "pro/v1/detail/tab/productList/get", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String tabProductList(DetailTabDataGetDTO detailTabDataGetDTO, @RequestParam("lang") String lang);


    /**
     * 获取创建人和协同人、负责人(判断高级规则用)
     * @param printDataVisibleDTO 入参
     * @return String
     */
    @RequestMapping(value = "pro/v1/detail/tab/ownerIdAndCoUserIdToPrint/get", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getOwnerIdAndCoUserIdToPrint(PrintDataVisibleDTO printDataVisibleDTO, @RequestParam("lang") String lang);

    /**
     * 获取tab栏产品信息
     * @param detailTabDataGetDTO 入参
     * @return String
     */
    @RequestMapping(value = "pro/v1/detail/tab/relationProductList/get", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getRelationProductList(DetailTabDataGetDTO detailTabDataGetDTO, @RequestParam("lang") String lang);


    /**
     * 获取tab栏产品信息
     * @param detailTabDataGetDTO 入参
     * @return String
     */
    @RequestMapping(value = "pro/v1/detail/tab/productList/summary", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getProductSummaryList(DetailTabDataGetDTO detailTabDataGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取关联数据对应的字段解释
     * @param explainMapLinkDataDTO 入参
     * @return String
     */
    @RequestMapping(value = "pro/v1/form/explain/linkData/map", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String explainMapByLinkData(ExplainMapLinkDataDTO explainMapLinkDataDTO, @RequestParam("lang") String lang);
    /**
     * 获取审批中的业务数据
     *
     * @param processNodeTaskGetDTO
     * @throws
     * @return String
     * @author: hongxiao
     * @date: 2020-02-11 18:05
     */
    @RequestMapping(value = "pro/v1/process/node/task/detail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getFormDataByProcess(ProcessNodeTaskGetDTO processNodeTaskGetDTO, @RequestParam("lang") String lang);

    /**
     * Description: 获取工作流审批中的数据
     * @param processNodeTaskGetDTO
	 * @param lang
     * @return java.lang.String
     * @throws
     * @author 魏荣杰
     * @date 2021/7/7 10:23
     * @since
     */
    @RequestMapping(value = "pro/v1/workflow/approveListPage/detail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getFormDataForWorkflow(ProcessNodeTaskGetDTO processNodeTaskGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取审批记录
     *
     * @param processNodeTaskGetDTO
     * @throws
     * @return
     * @author: hongxiao
     * @date: 2020-02-12 10:56
     */
    @RequestMapping(value = "pro/v1/process/node/task/records", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getProcessRecords(ProcessNodeTaskGetDTO processNodeTaskGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取审批记录(工作流)
     *
     */
    @RequestMapping(value = "pro/v1/workflow/approveListPage/records", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getWorkflowRecords(ProcessNodeTaskGetDTO processNodeTaskGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取工单可选表单列表
     * @param templateDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/template/print/templateList", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getWorkOrderFormEnableList(TemplateDTO templateDTO, @RequestParam("lang") String lang);

    /**
     * 获取打印工单进展数据
     * @param formDataGetDTO
     * @return
     */
    @RequestMapping(value = "pro/v1/workOrder/center/getPrintRelationData", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getPrintRelationData(FormDataGetDTO formDataGetDTO, @RequestParam("lang") String lang);
    /**
     * 获取打印工单进展数据
     * @param formDataGetDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/comment/getWorkOrderDynamic", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getPrintDynamicData(FormDataGetDTO formDataGetDTO, @RequestParam("lang") String lang);

    /**
     * 获取客户对账单数据
     * @param statementCustomerTableDTO
     * @return
     */
    @RequestMapping(value = "/pro/v1/customerStatement/customer/table", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String getCustomerTableData(StatementCustomerTableDTO statementCustomerTableDTO, @RequestParam("lang") String lang);

    /**
     * 获取对账单详细
     * @param detailDTO
     * @param lang
     * @return
     */
    @RequestMapping(value = "/pro/v1/statementSummary/detail", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_UTF8_VALUE)
    String statementDetail(StatementSummaryDetailDTO detailDTO, @RequestParam("lang") String lang);
}
